package com.boilermaker.springbootdemo;

import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@RequestMapping("/response")
/*
    Controller注解同样为Spring标识需扫描的类，但该类下的方法会被解析为返回视图（View）
    在Web开发早期，后端和前端区分不严格，后端代码会返回视图，因此Controller实际上是历史遗留
    现在普遍后端只需要返回前端需要的数据，至于页面的视图则交由前端处理，因此多数情况使用RestController
    被Controller注解的类中若有方法需要返回纯数据，则需添加ResponseBody注解
    RestController = Controller + ResponseBody
 */
@Controller
public class ResponseController {
    // 返回HTML页面
    @RequestMapping("/index")
    public String index() {
        return "/index.html";
    }

    // 返回JSON
    @RequestMapping("/info")
    // 声明该方法返回的是纯数据
    @ResponseBody
    // 当为前端传递对象时，Spring会将其自动解析为JSON类型，也就是自动设置Content-Type为JSON
    public UserInfo getInfo() {
        return new UserInfo("li", 18, "8f723g");
    }

    @RequestMapping("/status")
    @ResponseBody
    public String setStatus(HttpServletResponse response) {
        response.setStatus(404);
        return "找不到页面";
    }
}
